home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
B-Book Series
/
(k)b1.d64
/
new'employee.l
< prev
next >
Wrap
Text File
|
2007-02-28
|
3KB
|
86 lines
0010 // CREATE A NEW EMPLOYEE / CLASSIFICATION FILE
0020 DIM NAME$ OF 20, CLASS$ OF 20
0030 OPEN FILE 2,"0:EMPLOYEE",WRITE
0040 REPEAT
0050 TAKE'IN("EMPLOYEE NAME:","A",NAME$,20)
0060 IF NAME$>"" THEN
0070 REPEAT
0080 TAKE'IN("CLASSIFICATION:","B",CLASS$,20)
0090 UNTIL CLASS$>""
0100 WRITE FILE 2: NAME$,CLASS$
0110 ENDIF
0120 UNTIL NAME$=""
0130 CLOSE
0140 //PROCEDURES FOLLOW
0150 //
0160 PROC TAKE'IN(PROMPT$,VALID$,REF REPLY$,MAX) CLOSED
0170 Z:=ZONE
0180 ZONE 0
0190 PRINT PROMPT$,
0200 PRINT "<", // LEFT SIDE
0210 FOR X:=1 TO MAX DO PRINT " ", // BLANK OUT INPUT AREA
0220 PRINT ">", // RIGHT SIDE
0230 FOR X:=1 TO MAX+1 DO PRINT "¥", // CURSOR LEFT
0240 FETCH(REPLY$,VALID$,MAX)
0250 PRINT // CARRIAGE RETURN
0260 ZONE Z
0270 ENDPROC TAKE'IN
0280 //
0290 PROC FETCH(REF A$,V$,MAX) CLOSED
0300 DIM VALID$ OF 40, B$ OF 1
0310 // IF V$ = "A" THEN THE ALPHABET IS USED (PLUS SPACE)
0320 // IF V$ = "D" THEN THE DIGITS ARE USED
0330 // IF V$ = "B" THEN BOTH ALPHABET AND DIGITS ARE USED (PLUS SPACE)
0340 // OTHERWISE VALID$ IS SET TO THE VALUE AS SENT
0350 // NOTE: >>> CARRIAGE RETURN AND DELETE KEY ARE ADDED TO VALID$
0360 Z:=ZONE
0370 ZONE 0
0380 A$:=""
0390 CASE V$ OF
0400 WHEN "A"
0410 VALID$:="ABCDEFGHIJKLMNOPQRSTUVWXYZ "
0420 WHEN "D"
0430 VALID$:="0123456789"
0440 WHEN "B"
0450 VALID$:="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789"
0460 OTHERWISE
0470 VALID$:=V$
0480 ENDCASE
0490 DONE:=FALSE; NUM:=0
0500 REPEAT
0510 GET'VALID(B$,VALID$+CHR$(13)+CHR$(20))
0520 CASE B$ OF
0530 WHEN CHR$(13) // CARRIAGE RETURN
0540 DONE:=TRUE
0550 WHEN CHR$(20) // DELETE KEY
0560 IF NUM THEN // ONLY DO IF ALREADY HAVE SOMETHING
0570 NUM:-1 // MINUS ONE FOR NUMBER IN STRING
0580 PRINT "¥ ¥", // CURSOR LEFT SPACE CURSOR LEFT
0590 A$:=A$(1:NUM)
0600 ENDIF
0610 OTHERWISE // ALL OTHER VALID CHARACTERS
0620 IF NUM<MAX THEN // DON'T GO PAST MAXIMUM
0630 A$:=A$+B$ // ADD CHARACTER TO THE STRINGRETURN NEEDED
0640 NUM:+1 // ADD 1 TO THE COUNT OF CHARACTERS
0650 PRINT B$, // PRINT THE CHARACTER
0660 ENDIF
0670 ENDCASE
0680 UNTIL DONE
0690 ZONE Z
0700 ENDPROC FETCH
0710 //
0720 PROC GET'VALID(REF C$,VALID$) CLOSED
0730 REPEAT
0740 GET'CHAR(C$)
0750 UNTIL C$ IN VALID$
0760 ENDPROC GET'VALID
0770 //
0780 PROC GET'CHAR(REF C$) CLOSED
0790 REPEAT
0800 C$:=KEY$
0810 UNTIL C$="" // CLEAR BUFFER
0820 REPEAT
0830 C$:=KEY$
0840 UNTIL C$>"" // WAIT FOR KEY
0850 ENDPROC GET'CHAR